//#include<iostream>
//typedef long long ll;
//const int N = 1e7 + 10;
//ll a[N];
//using namespace std;
//int main()
//{
//	ll n, k;cin >> n >> k;ll MAX = 0,ret = 0;
//	for (int i = 1; i <= n; i++)
//	{
//		cin >> a[i];
//		MAX = max(MAX, a[i]);
//	}ll sum = 0;bool flag = true;
//	for (int i = MAX; i >= 1; i--)
//	{
//		sum = 0;
//		flag = true;
//		for (int j = 1; j <= n; j++)
//		{
//			sum += a[j] / i;
//		}
//		if (sum >= k) 
//		{
//			flag = false;
//			ret = i;
//			break;
//		}
//	}
//	if (flag == false)	cout << ret << endl;
//	else cout << "0" << endl;
//	return 0;
//}
#include<iostream>
const int N = 1e6 + 10;
typedef long long ll;
ll a[N];
using namespace std;
int main()
{
	int n, k;cin >> n >> k;ll MAX = 0,sum =0;
	for (int i = 1; i <= n; i++)
	{
		cin >> a[i];
		MAX = max(MAX, a[i]);
	}
	ll left = 0, right = MAX;
	while (left < right)
	{
		ll mid = (right + left + 1) / 2;sum = 0;
		for (int i = 1; i <= n; i++)
		{
			sum += a[i] / mid;
		}
		if (sum >= k) left = mid;
		else right = mid - 1;
	}
	cout << left << endl;
	return 0;
}